package com.pet_service.interceptor;

/**
 * 登录用户上下文持有者
 * 使用ThreadLocal存储当前线程的登录用户信息
 */
public class LoginUserContext {

    private static final ThreadLocal<LoginUser> USER_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 设置当前登录用户
     * @param loginUser 登录用户信息
     */
    public static void setLoginUser(LoginUser loginUser) {
        USER_THREAD_LOCAL.set(loginUser);
    }

    /**
     * 获取当前登录用户
     * @return 登录用户信息
     */
    public static LoginUser getLoginUser() {
        return USER_THREAD_LOCAL.get();
    }

    /**
     * 获取当前登录用户手机号
     * @return 手机号
     */
    public static String getPhoneNumber() {
        LoginUser loginUser = getLoginUser();
        return loginUser != null ? loginUser.getUserPhone() : null;
    }

    /**
     * 获取当前登录用户id
     * @return id
     */
    public static Integer getUserId() {
        LoginUser loginUser = getLoginUser();
        return loginUser != null ? loginUser.getUserId() : null;
    }

    /**
     * 获取当前登录用户名
     * @return 用户名
     */
    public static String getUserName() {
        LoginUser loginUser = getLoginUser();
        return loginUser != null ? loginUser.getUserName() : null;
    }

    /**
     * 清除当前线程的用户信息
     */
    public static void clear() {
        USER_THREAD_LOCAL.remove();
    }
}
